import WsSocket from './../../chat/im-server/ws-socket'
import { Session } from '/@/utils/storage';
import {useUserInfo} from "/@/stores/userInfo";

/**
 * SocketGpt 连接实例
 *
 * 注释: 所有 WebSocket 消息接收处理在此实例中处理
 */
class SocketGpt {
    /**
     * WsSocket 实例
     */
    socket

    /**
     * SocketGpt 初始化实例
     */
    constructor() {
        const storesUserInfo = useUserInfo()
        this.socket = new WsSocket(
            () => {
                let token = Session.get('token')
                if(token == null || token === ""){
                    window.location.reload()
                }
                return `${import.meta.env.VITE_GPT_WS_API_URL}` + storesUserInfo.userInfos.id + "?token=" + token
            },
            {
                onError: evt => {
                    console.log('Websocket 连接失败回调方法')
                },
                // Websocket 连接成功回调方法
                onOpen: evt => {
                    console.log("连接成功")
                },
                // Websocket 断开连接回调方法
                onClose: evt => {
                    console.log(evt)
                },
                onMessage: evt =>{
                    console.log("测试3",evt)
                }
            }
        )

        this.registerEvents()
    }
    // 连接 WebSocket 服务
    connect() {
        this.socket.connection()
    }
    /**
     * 注册回调消息处理事件
     */
    registerEvents() {
        // eslint-disable-next-line no-unused-vars
        this.socket.on('heartbeat', data => {

        })
    }

    /**
     * 聊天发送数据
     *
     * @param {Object} mesage
     */
    send(mesage) {
        this.socket.send(mesage)
    }

    /**
     * 推送消息
     *
     * @param {String} event 事件名
     * @param {Object} data 数据
     */
    emit(event, data) {
        this.socket.emit(event, data)
    }
}

export default new SocketGpt()
